package leecode

import (
	"sort"
	"unicode"
)

func numberOfSpecialChars2(word string) int {
	hashMap := make(map[rune][]int) //记录数组中的字母,以及出现的下标
	for index, str := range word {
		hashMap[str] = append(hashMap[str], index)
	}
	var result int
	for i := 'Z'; i >= 'A'; i-- {
		indexs1, ok1 := hashMap[i]                  //大写字母
		indexs2, ok2 := hashMap[unicode.ToLower(i)] //对应的小写字母
		sort.Ints(indexs1)
		sort.Ints(indexs2)
		if ok1 && ok2 && indexs1[0] > indexs2[len(indexs2)-1] {
			//indexs2 中所有的值 , 都必须要比indexs1中的值小
			result++
		}
	}
	return result
}
